// 导入db模块
const db = require('../db/index')

// 检测用户token是否过期处理函数
exports.isPastdue = (req, res) => {
  res.send({
    code: 200,
    message: 'token可用'
  })
}
// 获取心愿墙的心愿内容字段处理函数
exports.getwishbarrage = (req, res) => {
  // 定义查询流动心愿语句
  const sql = 'select * from wall_wish order by timer desc LIMIT 200'
  db.query(sql, (err, result) => {
    if (err) return res.cc(err)
    if (result.length === 0) return res.cc('未获取到数据，请稍后重试')
    res.send({
      code: 200,
      message: '查询成功',
      data: result
    })
  })
}
// 获取心愿墙时间数据列表处理函数
exports.getwishdata = (req, res) => {
  // 定义按timer字段降序5条数据
  const sql = 'select * from wall_walls  where num_types=0 order by timer desc LIMIT ?,5'
  db.query(sql, req.params.num * 1, (err, result) => {
    if (err) return res.cc(err)
    res.send({
      code: 200,
      message: '查询成功',
      data: result
    })
  })
}
// 获取心愿墙热度数据列表处理函数
exports.getwishdataByheat = (req, res) => {
  // 查询7天内的热度降序
  const sql = 'select * from wall_walls  where num_types=0 and DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(timer) order by like_count desc LIMIT ?,5'
  db.query(sql, req.params.num * 1, (err, result) => {
    if (err) return res.cc(err)
    res.send({
      code: 200,
      message: '查询成功',
      data: result
    })
  })
}
// 发布流动心愿弹幕
exports.publishwishdm = (req, res) => {
  // 将请求头中的id添加到本次请求参数中
  req.body.uuId = req.user.id
  // 定义插入语句
  const sql = 'insert into wall_wish set?'
  db.query(sql, req.body, (err, result) => {
    if (err) return res.cc(err)
    if (result.affectedRows !== 1) return res.cc('发送失败,请稍后重试')
    res.send({
      code: 200,
      message: '发送弹幕成功'
    })
  })
}
// 获取祝福墙的时间排序数据列表处理函数
exports.getblessing = (req, res) => {
  // 定义查询祝福墙数据语句
  const sql = 'select * from wall_walls  where num_types=1 order by timer desc LIMIT ?,5'
  db.query(sql, req.params.num * 1, (err, result) => {
    if (err) return res.cc(err)
    res.send({
      code: 200,
      message: '查询成功',
      data: result
    })
  })
}
// 获取祝福墙的热度排序数据列表处理函数
exports.getblessingByheat = (req, res) => {
  // 定义查询祝福墙数据语句 热度应该为7天内的热度榜
  const sql = 'select * from wall_walls  where num_types=1 and DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(timer) order by like_count desc LIMIT ?,5'
  db.query(sql, req.params.num * 1, (err, result) => {
    if (err) return res.cc(err)
    res.send({
      code: 200,
      message: '查询成功',
      data: result
    })
  })
}
// 获取表白墙的数据列表处理函数
exports.getconfession = (req, res) => {
  // 定义查询表白墙数据语句
  const sql = 'select * from wall_walls where num_types=2 order by timer desc LIMIT ?,5'
  db.query(sql, req.params.num * 1, (err, result) => {
    if (err) return res.cc(err)
    res.send({
      code: 200,
      message: '查询成功',
      data: result
    })
  })
}
// 获取表白墙的热度排序数据列表的处理函数
exports.getconfessionByheat = (req, res) => {
  // 定义查询表白墙数据语句  热度应该为7天内的热度榜
  const sql = 'select * from wall_walls where num_types=2 and DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(timer) order by like_count desc LIMIT ?,5'
  db.query(sql, req.params.num * 1, (err, result) => {
    if (err) return res.cc(err)
    res.send({
      code: 200,
      message: '查询成功',
      data: result
    })
  })
}
// 发布机遇处理函数
exports.publishluck = (req, res) => {
  // 处理逻辑: 查询有无uuid用户发布的机遇，有则更改，无则插入
  // 我们content关键字采用的是json格式,所以需要转
  req.body.content = JSON.stringify(req.body.content)
  const sql = 'select * from wall_luck where uuId=?'
  db.query(sql, req.user.id, (err, result) => {
    if (err) return res.cc(err)
    if (result.length === 1) { //更改
      // 定义更改语句
      const updateSql = 'update wall_luck set? where uuId=?'
      db.query(updateSql, [req.body, req.user.id], (err, result) => {
        if (err) return res.cc(err)
        if (result.affectedRows !== 1) return res.cc('更改失败,请稍后重试')
        res.send({
          code: 200,
          message: '更改成功',
        })
      })
    } else { //插入
      // 定义插入语句
      const insertSql = 'insert into wall_luck set?'
      db.query(insertSql, req.body, (err, result) => {
        if (err) return res.cc(err)
        if (result.affectedRows !== 1) return res.cc('发布失败,请稍后重试')
        res.send({
          code: 200,
          message: '发布成功',
        })
      })
    }
  })
}
// 查询个人机遇信息处理函数
exports.getluckinfo = (req, res) => {
  // 通过请求头中的id查询
  const sql = 'select * from wall_luck where uuId=?'
  db.query(sql, req.user.id, (err, result) => {
    if (err) return res.cc(err)
    if (result.length !== 1) return res.cc('该用户还没有数据')
    // 也要将content字段从json格式转成对象
    result[0].content = JSON.parse(result[0].content)
    res.send({
      code: 200,
      message: '查询成功',
      data: result[0]
    })
  })
}
// 根据时间获取推荐机遇处理函数
exports.getluckBytimer = (req, res) => {
  // 定义查询语句 每次五条 条件是不能有自己留下的机遇
  const sql = 'select * from wall_luck where uuId!=? order by timer desc LIMIT ?,5'
  db.query(sql, [req.user.id, req.params.num * 1], (err, result) => {
    if (err) return res.cc(err)
    // 这里的字段中content是json格式 放到前端去处理
    res.send({
      code: 200,
      message: '查询成功',
      data: result
    })
  })
}
// 与其机遇处理函数
exports.withhisluck = (req, res) => {
  // 定义查询语句，查询看该用户你是否已经发生了机遇
  const selectSql = 'select * from wall_relation where hhId=? and uuId=?'
  db.query(selectSql, [req.body.hhId, req.body.uuId], (err, result) => {
    if (err) return res.cc(err)
    if (result.length === 1) return res.cc('你已经和该用户机遇,换一个试试吧')
    // 定义插入语句
    const sql = 'insert into wall_relation set?'
    db.query(sql, req.body, (err, result) => {
      if (err) return res.cc(err)
      if (result.affectedRows !== 1) return res.cc('发起机遇失败,请稍后重试')
      res.send({
        code: 200,
        message: "机遇成功,可前往我的->我的关系查看"
      })
    })
  })
}